package tpi.gui.panels.info

import dominio.ubicaciones.Pais
import org.apache.wicket.markup.html.basic.Label
import org.apache.wicket.markup.html.form.Form
import org.apache.wicket.markup.html.panel.Panel
import org.apache.wicket.model.CompoundPropertyModel
import org.uqbar.wicket.xtend.WicketExtensionFactoryMethods
import org.uqbar.wicket.xtend.XListView
import org.uqbar.wicket.xtend.XButton
import dominio.ubicaciones.Lugar
import org.apache.wicket.model.PropertyModel
import org.apache.wicket.markup.html.form.DropDownChoice
import org.uqbar.commons.model.UserException

class LugaresPanel extends Panel {
	
	extension WicketExtensionFactoryMethods = new WicketExtensionFactoryMethods
	private final Pais pais
	private Lugar lugarSeleccionado
	
	new(String id, Pais pais) {
		super(id)
		this.pais = pais
		this.defaultModel = pais.asCompoundModel
		val Form<Pais> form = new Form<Pais>("lugaresForm", new CompoundPropertyModel(pais))
		val listView = new XListView("lugares")
		listView.populateItem = [c |
			c.model = c.modelObject.asCompoundModel
			c.addChild(new Label("nombreTipoLugar"))
			c.addChild(new XButton("eliminar").onClick = [| eliminar(c.modelObject)])
		]
		form.addChild(listView)
		form.addChild(new DropDownChoice("lugaresPosibles",
             new PropertyModel(this, "lugarSeleccionado"),
             pais.lugaresPosibles))
        form.addChild(new XButton("agregarLugar").onClick = [| 
			agregarLugarSeleccionado
		])
		addChild(form)
	}
	
	def agregarLugarSeleccionado() {
		if(lugarSeleccionado == null)
			throw new UserException("Debe elejir un lugar!")
		pais.agregarLugar(lugarSeleccionado)
		lugarSeleccionado = null
	}
	
	def eliminar(Lugar lugar) {
		pais.borrarLugar(lugar)
	}
	
}